Computers traditionally use built-in code known as a BIOS (Basic Input/Output System) to perform initial boot functions and to control certain attached devices before loading an operating system or other software. This enables a computer to receive input from a keyboard and to output data to a display and further provides the computer with control of devices such as serial communications ports and disk drives.
When booting, a computer typically either executes the BIOS from read only memory (ROM) or flash memory, or loads the BIOS into random access memory (RAM) and executes the BIOS code from RAM to perform initial testing, configuration, and to initialize loading an operating system. Certain computers are diskless and thus require these boot operations to be performed over a network connection. Accordingly, although operating systems are traditionally loaded from hard disks or diskette drives, BIOS extensions, such as the Preboot eXecution Environment (PXE) provide a computer system the ability to establish a network connection before loading an operating system, and to boot over the network connection via a network bootstrap program. Various other BIOS extensions provide the ability to boot via Universal Serial Bus (USB) or other interfaces.
The iSCSI protocol allows for the transmission of data across a network using SCSI commands over IP-based networks. Accordingly, the iSCSI protocol can be employed for such boot operations to enable the loading of the operating system from a remote server/storage device. However, in order to enable such remote boot operations, network parameters for the computer, such as the Internet Protocol (IP) address, subnet mask, gateway, etc., are to be configured prior to network connectivity with the server/storage device from which the operating system is to be loaded.
Typically, these network parameters are configured based on communications with a Dynamic Host Configuration Protocol (DHCP) server that dynamically assigns these parameters. However, the DHCP communications are typically not available until after the boot operations have been completed. Therefore, a typical approach for setting these network parameters prior to DHCP communications would be a manual setting of the parameters corresponding to the setting by the DHCP server. However, if these parameter values are set to invalid values or the computer is set to wait for the receipt of these parameters from the DHCP servers, the iSCSI network boot operations will be unable to perform network communications for remote boot operations.